package miaofusdk

import (
	"gitee.com/garlic/tools"
	"gitee.com/garlic/tools/httplib"
)

/**
消息队列数据结构
*/
type MqBean struct {
	Channel string      `json:"channel,omitempty"`
	Data    interface{} `json:"data,omitempty"`
}

/**
所有接口的统一返回数据结构样式.
特殊接口除外
其它的数据格式请统一定义为如下例子
type User struct {
	Response
	Data UserBean `json:"data,omitempty"`
}

type Users struct {
	Response
	Page       int        `json:"page,string"`
	Rows       int        `json:"rows,string"`
	TotalCount int        `json:"total_count,string"`
	TotalPage  int        `json:"total_page,string"`
	List       []UserBean `json:"list,omitempty,string"`
}

暂定如下规则.
	1. struct 的名字命名请使用能明确表示数据意义.尽量使用英文.不要用拼音.
	2. 接口数据内容返回请均使用 string ..定义时可以使用 这个字段具体的 数据类型..但是在 json 中请使用, string 进行标注.
	   这样接口包 encoding/json 会自动将其转换为 string.
	3. time类型统一为 string .并且格式化为 yyyyMMddHHmmss 的格式.
	4. 所有定义的接口响应数据格式.统一包含 Response.Response 的定义见下方
	5. 项目中对于 数据库模型 转换为 此处响应数据的 公共方法,在具体的业务项目中请统一实现.
*/

type Response struct {
	/**
	code 表示接口返回码
	0  统一表示成功.
	其它值表示失败...根据业务进行对应处理..
	*/
	Code string `json:"code,omitempty"`
	//描述信息.做接口返回信息简单描述
	Msg string `json:"msg,omitempty"`
}

/**
估摸着.各位抛弃原来直接调用数据库的便捷性..用这个的话.肯定不爽.
所以把对应的几个接口都写成方法了.
使用之前..先配置下调用的 url.
这里就不说了.
*/
type SrvBase struct {
	post_url string
}

func (s *SrvBase) SetUrl(link string) {
	s.post_url = "http://" + link + ":"
}

func (s *SrvBase) GetPost(link string) *httplib.BeegoHTTPRequest {
	http_request := httplib.Post(link)
	http_request.Header("ip_addr", tools.GetLocalIp())
	return http_request
}

type SrvUserManager struct {
	SrvBase
}

func (s *SrvUserManager) GetUrl() string {
	return s.post_url + "40016"
}

type SrvShopManager struct {
	SrvBase
}

func (s *SrvShopManager) GetUrl() string {
	return s.post_url + "40015"
}

type SrvAliGoodManager struct {
	SrvBase
}

func (s *SrvAliGoodManager) GetUrl() string {
	return s.post_url + "40018"
}

type SrvUnionDbqManager struct {
	SrvBase
}

func (s *SrvUnionDbqManager) GetUrl() string {
	return s.post_url + "40017"
}

type SrvOrderMenuManager struct {
	SrvBase
}

func (s *SrvOrderMenuManager) GetUrl() string {
	return s.post_url + "40022"
}

type SrvAliAuthManager struct {
	SrvBase
}

func (s *SrvAliAuthManager) GetUrl() string {
	return s.post_url[:len(s.post_url)-1]
}

type SrvMfGoodsManager struct {
	SrvBase
}

func (s *SrvMfGoodsManager) GetUrl() string {
	return s.post_url + "16069"
}

type SrvDataCenterManager struct {
	SrvBase
}

func (s *SrvDataCenterManager) GetUrl() string {
	return s.post_url + "40024"
}
